class A{
    // 被复用的功能
    public void f() {
        //...
    }
}
// B依赖于A
// B是一个整体类，A是一个局部类
// B 包含 了A类的对象
class B {
    private String no;
    private A obj;
    public B()
    {
        obj = new A();
    }
    // B复用了A的功能f()
    public void f() {
        obj.f(); //复用A的功能
    }
    // 其他函数省略
}

// D依赖于A，依赖的程序比 包含 方式弱
// 通过参数传递方式
class D {
    public void f(A obj) {
        obj.f();//复用A的功能
    }
}

// 子类型依赖于父类型
// C是子类型，A是父类型
// 子类型对父类型的依赖程度是最高的
class C extends A {

    public void f() {
        super.f();//复用父类型A的功能
    }

}


public class Test {
}
